package org.jeecg.modules.syncdata.service;

import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import org.jeecg.modules.syncdata.entity.SyncLog;

import java.util.List;

/**
 * 同步日志服务
 *
 * @author zhanglei01
 * @date 2022/03/16
 */
public interface SyncLogService extends IMppService<SyncLog> {

    /**
     * 获取同步结果
     *
     * @param tableName 表名
     * @param dayTime   一天的时间
     * @return {@link Boolean}
     */
    Boolean getSyncResult(String tableName, String dayTime);

    /**
     * 设置同步完成
     *
     * @param tableName 表名
     * @param dayTime   一天的时间
     * @param isSuccess 是否成功
     * @return {@link Boolean}
     */
    Boolean setSyncFinish(String tableName, String dayTime, Boolean isSuccess);

    /**
     * 设置同步完成
     *
     * @param tableName 表名
     * @param dayTime   一天的时间
     * @param isSuccess 是否成功
     * @param msg       味精
     * @return {@link Boolean}
     */
    Boolean setSyncFinish(String tableName, String dayTime, Boolean isSuccess, String msg);

    /**
     * 设置同步开始
     *
     * @param tableName 表名
     * @param dayTime   一天的时间
     * @return {@link Boolean}
     */
    Boolean setSyncStart(String tableName, String dayTime);

    /**
     * 获取同步结果除了订单
     *
     * @param dayTime 一天的时间
     * @return {@link Boolean}
     */
    Boolean getSyncResultExceptOrder(String dayTime);

    /**
     * 获取之前一天同步结果
     *
     * @param dayTime 一天的时间
     * @return {@link Boolean}
     */
    Boolean getBeforeDaySyncResult(String dayTime);

    /**
     * 获取同步结果
     *
     * @param dayTime 一天的时间
     * @return {@link Boolean}
     */
    Boolean getSyncResult(String dayTime);


    /**
     * 获取同步失败数据
     *
     * @param pageSize 分页大小
     * @return {@link List}<{@link SyncLog}>
     */
    List<SyncLog> getSyncFailData(Integer pageSize);

    /**
     * 获取同步日期时间
     *
     * @param tableName 表名
     * @return {@link DateTime}
     */
    DateTime getSyncDateTime(String tableName);

    /**
     * 获取同步数据列表
     *
     * @param updateTime 更新时间
     * @param indexPage  指数分页
     * @return {@link IPage}<{@link SyncLog}>
     */
    IPage<SyncLog> getSyncDataList(String updateTime, Integer indexPage);

}
